﻿using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace PFC.Program.Verification.Pages
{
    /// <summary>
    /// Логика взаимодействия для Regis.xaml
    /// </summary>
    public partial class Regis : Page
    {

        public Regis()
        {
            InitializeComponent();
        }

        /* Подтверждение регистрации */
        private void button_Registration_Click(object sender, RoutedEventArgs e)
        {
            string login = textBox_login.Text.Replace(" ", string.Empty);
            string password = Hash_SHA1(passwordBox_password.Password.Replace(" ", string.Empty));
            string secFrase = textBox_phrase.Text;

            if (login != "" && password != "")
            {
                // Проверка на уникальность логина
                SqlDataReader readerCheckUniqLogin = ClassRequests.CheckUniqLogin_Registration();
                while (readerCheckUniqLogin.Read())
                {
                    if (readerCheckUniqLogin["login"].ToString() == login)
                    {
                        MessageBox.Show("Пользователь с таким именем уже существует!", "Ошибка",
                                         MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                }

                // Передача логина в глоб. переменную
                GlobalVaribles.login = textBox_login.Text;

                // Создание профиля, пространства для кошельков и пространства транзакций
                ClassRequests.AddProfile_Registration(login, password, secFrase);
                ClassRequests.CreateSpaceWallets();
                ClassRequests.CreateTxsTable();

                MessageBox.Show("Успешная регистрация", "Оповещение", MessageBoxButton.OK,
                                MessageBoxImage.Information);

                NavigationService.GoBack();
            }

            else
                MessageBox.Show("Постойте! Вы не ввели все данные в поля.", "Внимание",
                                MessageBoxButton.OK, MessageBoxImage.Warning);
        }

        /* На пред. страницу */
        private void back_Btn_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.GoBack();
        }

        // Метод хэширования пароля
        public string Hash_SHA1(string password)
        {
            using (SHA1Managed sha1 = new SHA1Managed())
            {
                var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(password));
                var sb = new StringBuilder(hash.Length * 2);
                foreach (byte b in hash)
                    sb.Append(b.ToString("X2"));
                return sb.ToString();
            }
        }
    }
}
